home *** CD-ROM | disk | FTP | other *** search
/ Champak 66 / Vol 66.iso / games / bob_espo.swf / scripts / __Packages / MazeGenerator.as < prev    next >
Encoding:
Text File  |  2013-04-24  |  13.7 KB  |  405 lines

  1. class MazeGenerator
  2. {
  3.    var mcContainer;
  4.    var aVLines;
  5.    var aHLines;
  6.    var nDepth;
  7.    var mcPieceSE;
  8.    var mcPieceC1;
  9.    var mcPieceT1;
  10.    var mcPieceT2;
  11.    var mcPieceC2;
  12.    var mcPieceRJ;
  13.    var mcPieceC3;
  14.    var mcPieceB1;
  15.    var mcPieceB2;
  16.    var mcPieceC4;
  17.    static var sLINKAGENAME_CORNER_UP = "mcPieceCornerUp";
  18.    static var sLINKAGENAME_CORNER_DOWN = "mcPieceCornerDown";
  19.    static var sLINKAGENAME_START = "mcPieceStart";
  20.    static var sLINKAGENAME_LATERAL = "mcPieceLateral";
  21.    static var sLINKAGENAME_RIGHTJCT = "mcPieceRightJct";
  22.    static var sLINKAGE_PANEL_START = "SB_Panneau_Start";
  23.    static var sLINKAGE_PANEL_FINISH = "SB_Panneau_Finish";
  24.    static var nUPPER_Y = 60;
  25.    static var nMIDDLE_Y = 200;
  26.    static var nLOWER_Y = 340;
  27.    static var nLEFT_X = 70;
  28.    static var nMIDDLE_LX = 220;
  29.    static var nMIDDLE_RX = 380;
  30.    static var nRIGHT_X = 530;
  31.    static var nFIRST_X = -100;
  32.    static var nSECOND_X = 140;
  33.    static var nTHIRD_X = 300;
  34.    static var nFOURTH_X = 460;
  35.    static var nFIRST_Y = 0;
  36.    static var nSECOND_Y = 120;
  37.    static var nTHIRD_Y = 280;
  38.    static var sNAME_SE = "mcStart";
  39.    static var sNAME_C1 = "mcCornerUpLeft";
  40.    static var sNAME_T1 = "mcLateralTopLeft";
  41.    static var sNAME_T2 = "mcLateralTopRight";
  42.    static var sNAME_C2 = "mcCornerUpRight";
  43.    static var sNAME_RJ = "mcRightJct";
  44.    static var sNAME_C3 = "mcCornerDownLeft";
  45.    static var sNAME_B1 = "mcLateralBottomLeft";
  46.    static var sNAME_B2 = "mcLateralBottomRight";
  47.    static var sNAME_C4 = "mcCornerDownRight";
  48.    static var nINDEX_SE = 0;
  49.    static var nINDEX_C1 = 1;
  50.    static var nINDEX_T1 = 2;
  51.    static var nINDEX_T2 = 3;
  52.    static var nINDEX_C2 = 4;
  53.    static var nINDEX_RJ = 5;
  54.    static var nINDEX_C3 = 6;
  55.    static var nINDEX_B1 = 7;
  56.    static var nINDEX_B2 = 8;
  57.    static var nINDEX_C4 = 9;
  58.    static var nUSED_SE_PIECE = 0;
  59.    static var nUSED_RJ_PIECE = 0;
  60.    static var sSTATE_START = "Start";
  61.    static var sSTATE_MIDWAY = "Midway";
  62.    static var sSTATE_FINISH = "Finish";
  63.    static var nSTART_PANEL_DEPTH = 1000000;
  64.    static var nFINISH_PANEL_DEPTH = 1000001;
  65.    static var nPANEL_X_SCALE = 151.2;
  66.    static var nPANEL_Y_SCALE = 130.6;
  67.    function MazeGenerator(_mcContainer)
  68.    {
  69.       this.mcContainer = _mcContainer;
  70.       this.aVLines = [[],[],[],[],[],[],[],[],[],[]];
  71.       this.aHLines = [[],[],[],[],[],[],[],[],[],[]];
  72.       this.nDepth = 0;
  73.    }
  74.    function addTrack(_bVertical, _mcLine)
  75.    {
  76.       var _loc4_ = this.getTabIndexByName(_mcLine._parent._parent._name);
  77.       if(_bVertical)
  78.       {
  79.          this.aVLines[_loc4_].push(_mcLine);
  80.       }
  81.       else
  82.       {
  83.          this.aHLines[_loc4_].push(_mcLine);
  84.       }
  85.    }
  86.    function getTabIndexByName(_nName)
  87.    {
  88.       var _loc3_ = 0;
  89.       switch(_nName)
  90.       {
  91.          case MazeGenerator.sNAME_SE:
  92.             _loc3_ = MazeGenerator.nINDEX_SE;
  93.             break;
  94.          case MazeGenerator.sNAME_RJ:
  95.             _loc3_ = MazeGenerator.nINDEX_RJ;
  96.             break;
  97.          case MazeGenerator.sNAME_C1:
  98.             _loc3_ = MazeGenerator.nINDEX_C1;
  99.             break;
  100.          case MazeGenerator.sNAME_C2:
  101.             _loc3_ = MazeGenerator.nINDEX_C2;
  102.             break;
  103.          case MazeGenerator.sNAME_C3:
  104.             _loc3_ = MazeGenerator.nINDEX_C3;
  105.             break;
  106.          case MazeGenerator.sNAME_C4:
  107.             _loc3_ = MazeGenerator.nINDEX_C4;
  108.             break;
  109.          case MazeGenerator.sNAME_B1:
  110.             _loc3_ = MazeGenerator.nINDEX_B1;
  111.             break;
  112.          case MazeGenerator.sNAME_B2:
  113.             _loc3_ = MazeGenerator.nINDEX_B2;
  114.             break;
  115.          case MazeGenerator.sNAME_T1:
  116.             _loc3_ = MazeGenerator.nINDEX_T1;
  117.             break;
  118.          case MazeGenerator.sNAME_T2:
  119.             _loc3_ = MazeGenerator.nINDEX_T2;
  120.       }
  121.       return _loc3_;
  122.    }
  123.    function getTabIndex(_nX, _nY)
  124.    {
  125.       var _loc4_ = 0;
  126.       if(_nX >= MazeGenerator.nFIRST_X && _nX < MazeGenerator.nSECOND_X)
  127.       {
  128.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  129.          {
  130.             _loc4_ = MazeGenerator.nINDEX_C1;
  131.          }
  132.          else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
  133.          {
  134.             _loc4_ = MazeGenerator.nINDEX_SE;
  135.          }
  136.          else
  137.          {
  138.             _loc4_ = MazeGenerator.nINDEX_C3;
  139.          }
  140.       }
  141.       else if(_nX >= MazeGenerator.nSECOND_X && _nX < MazeGenerator.nTHIRD_X)
  142.       {
  143.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  144.          {
  145.             _loc4_ = MazeGenerator.nINDEX_T1;
  146.          }
  147.          else
  148.          {
  149.             _loc4_ = MazeGenerator.nINDEX_B1;
  150.          }
  151.       }
  152.       else if(_nX >= MazeGenerator.nTHIRD_X && _nX < MazeGenerator.nFOURTH_X)
  153.       {
  154.          if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  155.          {
  156.             _loc4_ = MazeGenerator.nINDEX_T2;
  157.          }
  158.          else
  159.          {
  160.             _loc4_ = MazeGenerator.nINDEX_B2;
  161.          }
  162.       }
  163.       else if(_nY >= MazeGenerator.nFIRST_Y && _nY < MazeGenerator.nSECOND_Y)
  164.       {
  165.          _loc4_ = MazeGenerator.nINDEX_C2;
  166.       }
  167.       else if(_nY >= MazeGenerator.nSECOND_Y && _nY < MazeGenerator.nTHIRD_Y)
  168.       {
  169.          _loc4_ = MazeGenerator.nINDEX_RJ;
  170.       }
  171.       else
  172.       {
  173.          _loc4_ = MazeGenerator.nINDEX_C4;
  174.       }
  175.       return _loc4_;
  176.    }
  177.    function generate()
  178.    {
  179.       this.generateStart();
  180.       this.generateLaterals();
  181.       this.generateCorners();
  182.       this.generateRightJct();
  183.    }
  184.    function cleanUp()
  185.    {
  186.       this.mcPieceSE.removeMovieClip();
  187.       this.mcPieceC1.removeMovieClip();
  188.       this.mcPieceT1.removeMovieClip();
  189.       this.mcPieceT2.removeMovieClip();
  190.       this.mcPieceC2.removeMovieClip();
  191.       this.mcPieceRJ.removeMovieClip();
  192.       this.mcPieceC3.removeMovieClip();
  193.       this.mcPieceB1.removeMovieClip();
  194.       this.mcPieceB2.removeMovieClip();
  195.       this.mcPieceC4.removeMovieClip();
  196.       this.mcContainer.mcPanelStart.removeMovieClip();
  197.       this.mcContainer.mcPanelFinish.removeMovieClip();
  198.    }
  199.    function isPieceFlipped(_nIndex)
  200.    {
  201.       var _loc3_ = false;
  202.       if(_nIndex == MazeGenerator.nINDEX_B1 && this.mcPieceB1._xscale == -100)
  203.       {
  204.          _loc3_ = true;
  205.       }
  206.       else if(_nIndex == MazeGenerator.nINDEX_B2 && this.mcPieceB2._xscale == -100)
  207.       {
  208.          _loc3_ = true;
  209.       }
  210.       else if(_nIndex == MazeGenerator.nINDEX_C1 && this.mcPieceC1._xscale == -100)
  211.       {
  212.          _loc3_ = true;
  213.       }
  214.       else if(_nIndex == MazeGenerator.nINDEX_C2 && this.mcPieceC2._xscale == -100)
  215.       {
  216.          _loc3_ = true;
  217.       }
  218.       else if(_nIndex == MazeGenerator.nINDEX_C3 && this.mcPieceC3._xscale == -100)
  219.       {
  220.          _loc3_ = true;
  221.       }
  222.       else if(_nIndex == MazeGenerator.nINDEX_C4 && this.mcPieceC4._xscale == -100)
  223.       {
  224.          _loc3_ = true;
  225.       }
  226.       else if(_nIndex == MazeGenerator.nINDEX_RJ && this.mcPieceRJ._xscale == -100)
  227.       {
  228.          _loc3_ = true;
  229.       }
  230.       else if(_nIndex == MazeGenerator.nINDEX_SE && this.mcPieceSE._xscale == -100)
  231.       {
  232.          _loc3_ = true;
  233.       }
  234.       else if(_nIndex == MazeGenerator.nINDEX_T1 && this.mcPieceT1._xscale == -100)
  235.       {
  236.          _loc3_ = true;
  237.       }
  238.       else if(_nIndex == MazeGenerator.nINDEX_T2 && this.mcPieceT2._xscale == -100)
  239.       {
  240.          _loc3_ = true;
  241.       }
  242.       return _loc3_;
  243.    }
  244.    function generateStart()
  245.    {
  246.       var _loc2_ = 0;
  247.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  248.       {
  249.          _loc2_ = Math.round(Math.random() * 1);
  250.       }
  251.       else if(MazeGenerator.nUSED_SE_PIECE == 0)
  252.       {
  253.          _loc2_ = 1;
  254.       }
  255.       else
  256.       {
  257.          _loc2_ = 0;
  258.       }
  259.       this.mcPieceSE = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_START,MazeGenerator.sNAME_SE,this.nDepth++);
  260.       this.mcPieceSE.gotoAndStop(_loc2_ + 1);
  261.       this.mcPieceSE._x = MazeGenerator.nLEFT_X;
  262.       this.mcPieceSE._y = MazeGenerator.nMIDDLE_Y;
  263.       MazeGenerator.nUSED_SE_PIECE = _loc2_;
  264.       var _loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelStart);
  265.       var _loc4_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_START,"mcPanelStart",1000000);
  266.       _loc4_._x = _loc3_.x;
  267.       _loc4_._y = _loc3_.y;
  268.       _loc4_._xscale = MazeGenerator.nPANEL_X_SCALE;
  269.       _loc4_._yscale = MazeGenerator.nPANEL_Y_SCALE;
  270.       _loc3_ = CTRLGame.getRef().addObjectViaDummy(this.mcPieceSE.piece.mcPanelFinish);
  271.       var _loc5_ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGE_PANEL_FINISH,"mcPanelFinish",1000001);
  272.       _loc5_._x = _loc3_.x;
  273.       _loc5_._y = _loc3_.y;
  274.       _loc5_._xscale = MazeGenerator.nPANEL_X_SCALE;
  275.       _loc5_._yscale = MazeGenerator.nPANEL_Y_SCALE;
  276.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  277.       {
  278.          _loc4_.gotoAndStop(MazeGenerator.sSTATE_START);
  279.          _loc5_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
  280.       }
  281.       else
  282.       {
  283.          _loc4_.gotoAndStop(MazeGenerator.sSTATE_MIDWAY);
  284.          _loc5_.gotoAndStop(MazeGenerator.sSTATE_FINISH);
  285.       }
  286.    }
  287.    function generateLaterals()
  288.    {
  289.       var _loc2_ = [1,2,3,4];
  290.       var _loc3_ = 0;
  291.       var _loc4_ = false;
  292.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  293.       this.mcPieceT1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T1,this.nDepth++);
  294.       this.mcPieceT1.gotoAndStop(_loc2_[_loc3_]);
  295.       _loc4_ = !!Math.round(Math.random());
  296.       if(_loc4_)
  297.       {
  298.          this.flipPiece(this.mcPieceT1);
  299.       }
  300.       this.mcPieceT1._x = MazeGenerator.nMIDDLE_LX;
  301.       this.mcPieceT1._y = MazeGenerator.nUPPER_Y;
  302.       _loc2_.splice(_loc3_,1);
  303.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  304.       this.mcPieceT2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_T2,this.nDepth++);
  305.       this.mcPieceT2.gotoAndStop(_loc2_[_loc3_]);
  306.       _loc4_ = !!Math.round(Math.random());
  307.       if(_loc4_)
  308.       {
  309.          this.flipPiece(this.mcPieceT2);
  310.       }
  311.       this.mcPieceT2._x = MazeGenerator.nMIDDLE_RX;
  312.       this.mcPieceT2._y = MazeGenerator.nUPPER_Y;
  313.       _loc2_.splice(_loc3_,1);
  314.       _loc3_ = Math.round(Math.random() * (_loc2_.length - 1));
  315.       this.mcPieceB1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B1,this.nDepth++);
  316.       this.mcPieceB1.gotoAndStop(_loc2_[_loc3_]);
  317.       _loc4_ = !!Math.round(Math.random());
  318.       if(_loc4_)
  319.       {
  320.          this.flipPiece(this.mcPieceB1);
  321.       }
  322.       this.mcPieceB1._x = MazeGenerator.nMIDDLE_LX;
  323.       this.mcPieceB1._y = MazeGenerator.nLOWER_Y;
  324.       _loc2_.splice(_loc3_,1);
  325.       this.mcPieceB2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_LATERAL,MazeGenerator.sNAME_B2,this.nDepth++);
  326.       this.mcPieceB2.gotoAndStop(_loc2_[0]);
  327.       _loc4_ = !!Math.round(Math.random());
  328.       if(_loc4_)
  329.       {
  330.          this.flipPiece(this.mcPieceB2);
  331.       }
  332.       this.mcPieceB2._x = MazeGenerator.nMIDDLE_RX;
  333.       this.mcPieceB2._y = MazeGenerator.nLOWER_Y;
  334.    }
  335.    function generateCorners()
  336.    {
  337.       var _loc2_ = [1,2];
  338.       var _loc3_ = [1,2];
  339.       var _loc4_ = 0;
  340.       _loc4_ = Math.round(Math.random() * (_loc2_.length - 1));
  341.       this.mcPieceC1 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C1,this.nDepth++);
  342.       this.mcPieceC1.gotoAndStop(_loc2_[_loc4_]);
  343.       this.mcPieceC1._x = MazeGenerator.nLEFT_X;
  344.       this.mcPieceC1._y = MazeGenerator.nUPPER_Y;
  345.       _loc2_.splice(_loc4_,1);
  346.       this.mcPieceC2 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_UP,MazeGenerator.sNAME_C2,this.nDepth++);
  347.       this.mcPieceC2.gotoAndStop(_loc2_[0]);
  348.       this.mcPieceC2._x = MazeGenerator.nRIGHT_X;
  349.       this.mcPieceC2._y = MazeGenerator.nUPPER_Y;
  350.       this.flipPiece(this.mcPieceC2);
  351.       _loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
  352.       this.mcPieceC3 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C3,this.nDepth++);
  353.       this.mcPieceC3.gotoAndStop(_loc3_[_loc4_]);
  354.       this.mcPieceC3._x = MazeGenerator.nLEFT_X;
  355.       this.mcPieceC3._y = MazeGenerator.nLOWER_Y;
  356.       _loc3_.splice(_loc4_,1);
  357.       _loc4_ = Math.round(Math.random() * (_loc3_.length - 1));
  358.       this.mcPieceC4 = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_CORNER_DOWN,MazeGenerator.sNAME_C4,this.nDepth++);
  359.       this.mcPieceC4.gotoAndStop(_loc3_[0]);
  360.       this.mcPieceC4._x = MazeGenerator.nRIGHT_X;
  361.       this.mcPieceC4._y = MazeGenerator.nLOWER_Y;
  362.       this.flipPiece(this.mcPieceC4);
  363.    }
  364.    function generateRightJct()
  365.    {
  366.       var _loc2_ = 0;
  367.       if(CTRLGame.getRef().Level == CTRLGame.nLEVEL1)
  368.       {
  369.          _loc2_ = Math.round(Math.random() * 1);
  370.       }
  371.       else if(MazeGenerator.nUSED_RJ_PIECE == 0)
  372.       {
  373.          _loc2_ = 1;
  374.       }
  375.       else
  376.       {
  377.          _loc2_ = 0;
  378.       }
  379.       var _loc3_ = !!Math.round(Math.random());
  380.       this.mcPieceRJ = this.mcContainer.attachMovie(MazeGenerator.sLINKAGENAME_RIGHTJCT,MazeGenerator.sNAME_RJ,this.nDepth++);
  381.       this.mcPieceRJ.gotoAndStop(_loc2_ + 1);
  382.       if(_loc3_)
  383.       {
  384.          this.flipPiece(this.mcPieceRJ);
  385.       }
  386.       this.mcPieceRJ._x = MazeGenerator.nRIGHT_X;
  387.       this.mcPieceRJ._y = MazeGenerator.nMIDDLE_Y;
  388.       MazeGenerator.nUSED_RJ_PIECE = _loc2_;
  389.    }
  390.    function flipPiece(_mcPiece)
  391.    {
  392.       _mcPiece._xscale = -100;
  393.    }
  394.    function getVTracks(_nX, _nY)
  395.    {
  396.       var _loc4_ = this.getTabIndex(_nX,_nY);
  397.       return this.aVLines[_loc4_];
  398.    }
  399.    function getHTracks(_nX, _nY)
  400.    {
  401.       var _loc4_ = this.getTabIndex(_nX,_nY);
  402.       return this.aHLines[_loc4_];
  403.    }
  404. }
  405.